﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ScriptingEngineModule
{
    class Program
    {
        static void Main(string[] args)
        {
            //na przyszlosc zeby nie zapomniec:
            //string baseDir = AppDomain.CurrentDomain.BaseDirectory;
            //Console.WriteLine("Base dir: " + baseDir);
            //wskazuje na:
            //E:\Projekty\luan\trunk\Server\Modules\ScriptingEngine\ScriptingEngine\bin\Release\

            //aktualny pomysl jest taki zeby trzymac wszystkie gry jakie mozna rozgrywac na serwerze w katalogu
            //scripts albo jakims innym, kazda gra to osobny katalog, czyli mamy np.:
            //Scripts ->
            //---------> Checkers
            //---------> Chess
            //---------> PolishCheckers
            //to oznacza ze mamy 3 gry na serwerze: warcaby, szachy i warcaby polskie
            string scriptLocationDir = @"E:\Projekty\luan\trunk\Server\Scripts\";
            string gameModuleFile = @"game.xml";

            //wzorzec budowniczego zastapic wzorcem abstrakcyjnej fabryki, bo definicja moze sie zmienic
            //niekoniecznie moze to byc plik xml chociaz przy nim aktualnie obstaje
            GameModuleBuilder builder = new GameModuleBuilder(scriptLocationDir, gameModuleFile);

            //wczytywanie gry nastepuje bez walidacji czy sa wszystkie niezbedne do jej dzialania pliki
            //sprawdzanie takie moze byc wykonywane podczas startu serwera
            //- nie marnujemy czasu na sprawdzanie czy wszystko jest ok przy kazdym ladowaniu
            //- pliki powinny byc tylko dostepne dla uzytkownika na ktorego koncie odpalony jest serwer
            //- pliki powinny byc readonly, skrypty nie powinny byc 
            GameModule module = builder.build();

            ScriptingEngine engine = new ScriptingEngine(module);
            engine.runModule(); //temporary
        }
    }
}
